Skip to content

[2186] Scaling utils#2231

Open
florianscheidl wants to merge 72 commits into
ecmwf:developfrom
florianscheidl:ekfs/scaling-plots-20260417
Open

[2186] Scaling utils#2231
florianscheidl wants to merge 72 commits into
ecmwf:developfrom
florianscheidl:ekfs/scaling-plots-20260417

Conversation

@florianscheidl
Copy link
Copy Markdown
Contributor

@florianscheidl florianscheidl commented Apr 17, 2026

Description

Contains utilities and configs we used for scaling experiments:

  • era5_georing config and required streams
  • elapsed time metrics in the trainer and run_train
  • scripts for extracting data from scaling experiments and generating plots/tables (moved into an optional package "weathergen-performance" (see README for how to use).

Example plots and tables:

jupiter_weak_scaling_table jupiter_weak_scaling

Small code modifications became necessary as we trained on more than 16 nodes. Specifically:

  • Lower bound on warmup, cooldown, and decay steps in lr_scheduler
  • Lower bound on beta2 used in Adam optimizer (negative values are illegal). Set to 0.9 now, based on Internet suggestion, but open to suggestions.
  • Lower bound on len_per_rank when setting mini_epoch_base (avoiding zero-division error for small configs).

Issue Number

Fixes #2186

Checklist before asking for review

  • I have performed a self-review of my code
  • My changes comply with basic sanity checks:
    • I have fixed formatting issues with ./scripts/actions.sh lint
    • I have run unit tests with ./scripts/actions.sh unit-test
    • I have documented my code and I have updated the docstrings.
    • I have added unit tests, if relevant
  • I have tried my changes with data and code:
    • I have run the integration tests with ./scripts/actions.sh integration-test
    • (bigger changes) I have run a full training and I have written in the comment the run_id(s): launch-slurm.py --time 60
    • (bigger changes and experiments) I have shared a hegdedoc in the github issue with all the configurations and runs for this experiments
  • I have informed and aligned with people impacted by my change:
    • for config changes: the MatterMost channels and/or a design doc
    • for changes of dependencies: the MatterMost software development channel

- Track startup_time_seconds: time from run() start to training loop
- Track total_training_time_seconds: time in training/validation cycles
- Track overall_time_seconds: total wall-clock time from launch to finish
- All metrics logged only on root rank to avoid file contention
- Metrics written to metrics.json, automatically uploaded to MLflow
- Console logs show timing summaries for quick monitoring
- Created .hermes/ directory with skills/, tasks/, docs/ subfolders
- Added skills overview (README.md) with task-type skills
- Implemented 'planning' and 'metrics' skills
- Documented timing metrics task in tasks/2026-04-17-timing-metrics/
- Added agent structure documentation
- Updated .gitignore with optional .hermes/ entry
- Added 2-3 month review cycle recommendation
- Defined criteria for skill consolidation
- Included usage frequency thresholds
- Documented when to merge or remove skills
@florianscheidl florianscheidl changed the title [2186](WIP) scaling plots branch [2186](WIP) scaling utils May 4, 2026
@florianscheidl florianscheidl changed the title [2186](WIP) scaling utils [2186] Scaling utils May 4, 2026
@florianscheidl florianscheidl marked this pull request as ready for review May 4, 2026 09:49
@github-actions github-actions Bot added the performance Work related to performance improvements label May 4, 2026
Comment thread src/weathergen/train/trainer.py Outdated
@github-project-automation github-project-automation Bot moved this to In Progress in WeatherGen-dev May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

performance Work related to performance improvements

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Create scaling plots for compute time proposal

2 participants